#include "stdio.h"
#include "fcntl.h"  // open
#include "unistd.h" // read write
#include "errno.h"
#include "string.h"

int main(int argc, char const *argv[])
{
    printf("现在是父进程: %d\n", getpid());

    // fork子进程
    pid_t pid = fork();
    if (pid == 0)
    {
        // 在子进程中执行
        printf("现在是子进程: %d\n", getpid());
        // 参数列表, 最后一个必须是NULL
        //char *args[] = {"/bin/ls", "-l", NULL};
        //char *env[] = {NULL};
        //execve("/bin/ls", args, env);

        //execl("/bin/ls", "ls", "-l", NULL);
        execl("/bin/pwd", "pwd", NULL);

        printf("abc\n");  // 不会执行
    }
    else if (pid > 0)
    {
        // 在父进程中执行
        printf("现在是父进程: %d  子进程id = %d\n", getpid(), pid);
    }
    else if (pid == -1)
    {
        perror("fork失败");
    }
    printf("在什么进程执行.... %d\n", getpid());

    return 0;
}
